import json  # 引入JSON模块解析数据。
import pandas as pd
import plotly.express as px
from pathlib import Path

path=Path("eq_data_30_day_m1.geojson")
try:
    content=path.read_text()
except:
    content= path.read_text(encoding="utf-8")

all_eq_data = json.loads(content)  # 运用json.load()可以吧json数据转换为Python可以阅读的方式。
readable_file = "data_readable_eq_data.json"
with open(readable_file,"w") as f:
    json.dump(all_eq_data,f,indent=4)#json.dump()接受一个JSON数据对象和文件对象，并把数据写入文件中。indent=4将缩进设定为4，使得文件更加可读。

# all_eq_dicts=all_eq_data["features"]#根据键去提取对应的值。
# print(len(all_eq_dicts))
all_eq_dicts=all_eq_data["features"]
mags,titles,lons,lats=[],[],[],[]#初始化列表记录震级等数据。
for eq_dict in all_eq_dicts:
    mag=eq_dict["properties"]["mag"]
    lon=eq_dict["geometry"]["coordinates"][0]
    title=eq_dict["properties"]["title"]
    lat=eq_dict["geometry"]["coordinates"][1]
    mags.append(mag)
    lons.append(lon)
    titles.append(title)
    lats.append(lat)
# print(mags[:10])#打印前十个地震的震级。
# print(titles[:10])
# print(lons[:10])
# print(lats[:10])

data=pd.DataFrame(
    data=zip(lons,lats,titles,mags),columns=["经度","纬度","位置","震级"]
)

fig=px.scatter(
    data,x="经度",y="纬度",
    labels={"x":"经度","y":"纬度"},range_x=[-200,200],
    range_y=[-90,90],width=800,
    height=800,
    title="全球地震散点图",
    size="震级",size_max=10,
    color="震级",
    hover_name="位置"
)

fig.write_html("global_earthquake.html")
fig.show()
